/**
 * 利用formidable 处理请求数据[文本和文件]
 * 
 * @param {*} req 
 * @param {*} name 
 * return  Promise() 成功的结果值是一个对象，包括普通字段和文件字段的对象
 */
const fs = require('fs');
const path = require('path');
const formidable = require('formidable');

module.exports = (req, name) => {
    return new Promise((resolve, reject) => {
        const form = formidable({
            uploadDir: path.resolve(__dirname, '../public/upload'), // 上传文件路径[目录必须存在]
            keepExtensions: true
        })
        form.parse(req, (err, fields, files) => {
            if(err){
                reject(err);
            }else{
                // formidable 上传图片，如果用户没有选择图片，它会自动创建一个空文件
                // 该文件的大小是 0
                if(files[name].size === 0){
                    // 删除垃圾图片文件
                    let deletePath = path.resolve(__dirname,'../public/upload', files[name].newFilename)
                    fs.unlinkSync(deletePath)
                }else{
                    fields.profile = '/upload/' + files[name].newFilename
                }
                console.log('files',files);
                // 将上传文件的路径存入fields中
               
                // 将fields作为成功Promise的结果值返回
                resolve(fields);
            }
        })
    })
}